/**
 * 获取某年某月的日历表
 * @y 年
 * @m 月
 */

const getCalendar = (y, m) => {
    const currentYear = y || new Date().getFullYear();
    const currentMonth = m || new Date().getMonth() + 1;

    // 获取每个月最后一天的日期
    const lastDay = new Date(currentYear, currentMonth, 0).getDate();

    // 每个月的日期列表
    let daysArr = [];
    for (let i = 0; i < lastDay; i++) {
        daysArr.push(i + 1);
    }

    // 获取每个月第一天是周几
    const weekStr = `${currentYear}/${
        currentMonth > 9 ? currentMonth : "0" + currentMonth
    }/01`;
    const week = new Date(weekStr).getDay() || 7;

    // 日历开始的空白位置
    const preCale = new Array(week - 1).fill("");

    // 这个月日期总共占几行
    const lines = Math.ceil((preCale.length + daysArr.length) / 7);

    // 日历后面的空白位置
    const lastCale = new Array(
        lines * 7 - preCale.length - daysArr.length
    ).fill("");

    let calendar = [...preCale, ...daysArr, ...lastCale];

    return calendar;
};

export default getCalendar;
